pve kernel切换debian kernel

·

PVE 使用的是 pve-kernel,它基于 Debian 的 linux-image,但额外包含:

pve kernel 和普通的debian内核比较做了部分特殊优化:

  • ZFS on Linux 官方支持(关键!)
  • PVE 官方内核预编译了 ZFS 模块
  • 与 zfsutils-linux 包完美兼容
  • Ceph/RBD 优化
  • KVM/QEMU 虚拟化相关补丁
  • 长期稳定 + 安全更新由 Proxmox 团队维护

如果不使用这些特性可以切换为正常的debian内核

切换debian普通内核

# 检查是否有 ZFS 池
zpool status
# 检查根文件系统是否在 ZFS 上
df / 
# 如果显示类似 zfs 或 rpool/ROOT,说明根在 ZFS 上 → ❌ 不要继续!
# 检查 PVE 存储配置
pvesm status
# 确保所有存储类型是 ext4、lvm、nfs、ceph 等,**不是 zfspool 或 zfs**

# 安装普通内核
apt install linux-image-amd64 linux-headers-amd64
# 更新 grub(确保新内核在启动项中)
update-grub
# 安装固件包: 这个安装时失败了, 说让彻底删除pve, 先不安装了
apt install firmware-linux firmware-realtek firmware-intel-sound
# 查看已安装的内核
dpkg -l | grep linux-image

配置grub 启动debian内核

sudo grep -En "\b(menuentry|submenu)\b" /boot/grub/grub.cfg
# 设置永久默认项(通过编号)
sudo grub-set-default 0
# 验证设置
sudo grub-editenv list
# Debian/Ubuntu 图形化配置
sudo apt install grub-customizer
# 然后运行:grub-customizer

# GRUB 2.00+ 版本将不同内核版本放入了 "Advanced options" 子菜单中,所以完整的菜单路径:
sudo grub-reboot "Advanced options for Proxmox VE GNU/Linux>Proxmox VE GNU/Linux, with Linux 6.1.0-40-amd64"
# 已切换到 Debian 内核且不用 ZFS,可以禁用这个无用的脚本避免未来干扰
sudo mv /etc/kernel/postinst.d/zz-proxmox-boot /etc/kernel/postinst.d/zz-proxmox-boot.disabled

修复切换内核后虚拟机网络失效

lsmod | grep virtio
modprobe virtio-net
update-initramfs -u -k $(uname -r)

echo virtio-net | sudo tee -a /etc/modules-load.d/virtio.conf
echo virtio-blk | sudo tee -a /etc/modules-load.d/virtio.conf

# 显卡固件
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/dg2_dmc_ver2_07.bin
sudo mkdir -p /lib/firmware/i915/
sudo cp dg2_dmc_ver2_07.bin /lib/firmware/i915/
sudo update-initramfs -u -k $(uname -r)

cat /etc/network/interfaces
cat /etc/pve/qemu-server/100.conf

iptables -L -n  # 检查是否有阻止流量的规则
ip route        # 检查默认路由是否正确o

# 如果策略是 DROP,需要放行桥接流量
sudo iptables -I FORWARD -i vmbr0 -s 192.168.2.0/24 -j ACCEPT
sudo iptables -I FORWARD -o vmbr0 -d 192.168.2.0/24 -j ACCEPT
systemctl enable netfilter-persistent
netfilter-persistent save
# sudo apt install iptables-persistent